import java.io.*;
import java.net.*; 
import java.awt.Window;
import javax.swing.JFrame;

import org.apache.torque.TorqueException;
import javax.swing.JLabel;
import javax.swing.JButton;

import java.awt.Dimension;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class VueMenuJeu extends Vue{
	private JButton btnLancerPartie;
	private JButton btnCreerVaisseau;
	private JButton btnChargerPartie;
	private JButton btnSupprimerVaisseau;
	private JButton btnQuitter;
	private JButton btnSupprimerPartie;
	
	public VueMenuJeu(Controleur controleur) {
		super(controleur);
		setTitle("Menu : StarAttack");
		// Affichage de la fenêtre non redimensionable
		setLocationRelativeTo(this.getParent());
		setVisible(true);		
		setResizable(true);
		// Affectation de la dimension minimale pour la fenêtre
		Dimension dimMini = new Dimension();
		dimMini.height = 240;
		dimMini.width = 270;
		setMinimumSize(dimMini);
		// Ajout du layout a la fenêtre (position absolue)
		getContentPane().setLayout(null);
		
		JLabel lblTitre = new JLabel("Sélectionnez l'action à effectuer :");
		lblTitre.setBounds(12, 12, 247, 15);
		getContentPane().add(lblTitre);
		
		//TODO BUG !
		btnLancerPartie = new JButton("Lancer une nouvelle partie");
		btnLancerPartie.setBounds(22, 39, 218, 25);
		getContentPane().add(btnLancerPartie);
		btnLancerPartie.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) 
			{
						try {
							getControleur().lancerVueLancementJeu();
						} catch (Exception e1) {
							e1.printStackTrace();
						}
						getControleur().fermerVue(VueMenuJeu.this);
			}
		});
		
		btnCreerVaisseau = new JButton("Créer un vaisseau");
		btnCreerVaisseau.setBounds(22, 63, 218, 25);
		getContentPane().add(btnCreerVaisseau);
		btnCreerVaisseau.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent event) {
				try {
					// lancer une fenêtre de jeu partie
					getControleur().lancerVueCreationVaisseau();
					// fermer la fenêtre de menu
					getControleur().fermerVue(VueMenuJeu.this);
				} catch (Exception excepLancementVueCreationVaisseau) {
					// si la fenêtre de jeu ne se lance pas >> message utilisateur
					IO.Message("Impossible de lancer l'interface de création de vaisseau");
				}
				}
		 });
		
		btnChargerPartie = new JButton("Charger une partie");
		btnChargerPartie.setBounds(22, 87, 218, 25);
		getContentPane().add(btnChargerPartie);
		btnChargerPartie.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e) {
					try {
						getControleur().lancerVueChargementPartie();
					} catch (TorqueException e1) {
						e1.printStackTrace();
					}
				getControleur().fermerVue(VueMenuJeu.this);
			}
		});
		
		btnQuitter = new JButton("Quitter");
		btnQuitter.setBounds(22, 167, 218, 25);
		getContentPane().add(btnQuitter);
		btnQuitter.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e) {
				// on ferme la vue et on quitte le programme.
				getControleur().fermerVue(VueMenuJeu.this);
				getControleur().ExitProgramme();
			}
		});
		
		// TODO BUG !
		btnSupprimerVaisseau = new JButton("Supprimer un vaisseau");
		getContentPane().add(btnSupprimerVaisseau);
		btnSupprimerVaisseau.addActionListener(new ActionListener() 
		{
			public void actionPerformed(ActionEvent e) {
					try {
						getControleur().lancerVueSuppressionVaisseau();
					} catch (Exception e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
					getControleur().fermerVue(VueMenuJeu.this);
			}
		});
		btnSupprimerVaisseau.setBounds(22, 111, 218, 25);
		
		
		btnSupprimerPartie = new JButton("Supprimer une Partie");
		btnSupprimerPartie.setBounds(22, 135, 218, 25);
		getContentPane().add(btnSupprimerPartie);
		btnSupprimerPartie.addActionListener(new ActionListener() 
		{
			public void actionPerformed(ActionEvent e) {
				try {
					getControleur().lancerVueSuppressionPartie();
					getControleur().fermerVue(VueMenuJeu.this);
				} catch (TorqueException excepLancementSuppressionPartie){
					IO.Message("Impossible de lancer l'interface de suppression de partie");
				}
			}
		});

	}
}

